package servlet;

import java.util.*;
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import to.OrdenPedidoTO;
import to.DetallePedidoTO;
import mgr.OrdenPedidoManager;

import to.AlmacenProductoTO;
import mgr.AlmacenProductoManager;

public class GrabarPedidoAction extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        procesar(req, resp);
    }
    
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        procesar(req, resp);
    }
    
    private void procesar(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        OrdenPedidoTO to;
        to = (OrdenPedidoTO) req.getSession().getAttribute("carritoPedidos");
        
        String cCliente = req.getParameter("cCliente");
        String cEstado = "001"; //Constante cuando es un pedido nuevo
        String cMoneda = "PEN"; //Moneda en que emite el usuario
        double iVenta = new Double(req.getParameter("iVenta"));
        double iDescuento = new Double(req.getParameter("iDescuento"));
        double iImpuesto = new Double(req.getParameter("iImpuesto"));
        double iTotal = new Double(req.getParameter("iTotal"));
        String dObservaciones = req.getParameter("dObservaciones");
        String cUsuarioCreo = "ADMIN"; //Código de usuario
        String dIpCreacion = req.getRemoteAddr();
        
        try {
            boolean acabado = false;
            String des_producto = "";
            for (int i = 0; i < to.getList().size(); i++) {
               DetallePedidoTO detalle1 = (DetallePedidoTO) to.getList().get(i);
               
               List<AlmacenProductoTO> listadoStockProductos;
               AlmacenProductoTO stock_to = new AlmacenProductoTO();
               stock_to.setCAlmacen("0001");
               stock_to.setCProducto(detalle1.getCProducto());
               AlmacenProductoManager stock_prod = new AlmacenProductoManager();
               listadoStockProductos = stock_prod.validaStockProducto(stock_to);

               ArrayList list_stock_prod = (ArrayList) listadoStockProductos;
               //for (int o = 0; o < list_stock_prod.size(); o++) {
                    AlmacenProductoTO stock_p = (AlmacenProductoTO) list_stock_prod.get(0);
                    if (detalle1.getCProducto().equals(stock_p.getCProducto())){
                        if((stock_p.getNStockActual()-detalle1.getNCantidad())<stock_p.getNStockMinimo()){
                            acabado = true;
                            des_producto = detalle1.getProductoTO().getDProducto();
                        }
                    }
               //}
            }
            
            if(!acabado){
                to.setCCliente(cCliente);
                to.setCEstado(cEstado);
                to.setCMoneda(cMoneda);
                to.setIVenta(iVenta);
                to.setIDescuento(iDescuento);
                to.setIImpuesto(iImpuesto);
                to.setITotal(iTotal);
                to.setDObservaciones(dObservaciones);
                to.setCUsuarioCreo(cUsuarioCreo);
                to.setDIpCreacion(dIpCreacion);

                req.getSession().setAttribute("carritoPedidos",to);

                OrdenPedidoManager orden = new OrdenPedidoManager();
                String mensajePedido = orden.insertaPedido(to, "0001");

                req.getSession().removeAttribute("carritoPedidos");
                req.getSession().removeAttribute("pedidoCliente");
                getServletContext().getRequestDispatcher("/Listado_Pedidos.jsp?mensajePedido="+mensajePedido).forward(req, resp);
            }
            else{
                getServletContext().getRequestDispatcher("/Registro_Pedido.jsp?acabado="+acabado+"&des_producto="+des_producto).forward(req, resp);
            }
        }
        catch (Exception e) {
            PrintWriter out = resp.getWriter();
            out.println("<HTML>");
            out.println("<HEAD>");
            out.println("</HEAD>");
            out.println("<BODY>");

            String msg = (String) e.getMessage();
            out.println("<P>" + msg + "</P>");

            out.println("</BODY>");
            out.println("</HTML>");
	}
    }
}